package com.xiyu.service.convert.customer;

import com.xiyu.service.vo.customer.customer.CustomerGetMailInfoByCustomerIdsOutput;
import com.xiyu.service.vo.customer.customer.CustomerCreateFollowInput;
import com.xiyu.service.model.customer.follow.CustomerFollow;
import com.xiyu.service.vo.customer.customer.CustomerSingleGetDetailOutput;
import com.xiyu.service.model.customer.contact.CustomerContactSocialMedia;
import com.xiyu.service.model.customer.contact.CustomerContactBusinessCard;
import com.xiyu.service.model.customer.contact.CustomerContactPhone;
import com.xiyu.service.model.customer.info.CustomerImage;
import com.xiyu.service.model.customer.info.CustomerWebsite;
import com.xiyu.service.model.customer.contact.CustomerContactMail;
import com.xiyu.service.model.customer.contact.CustomerContact;
import com.xiyu.service.vo.customer.customer.CustomerUpdateInput;
import com.xiyu.service.vo.customer.customer.CustomerCreateInput;
import com.xiyu.service.vo.customer.customer.CustomerPageQueryOutput;
import com.xiyu.service.model.customer.info.CustomerInfo;
import java.util.*;

import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

/**
 * 客户管理 Convert
 */
@Mapper
public interface CustomerConvert {
    CustomerConvert INSTANCE = Mappers.getMapper(CustomerConvert.class);


    List<CustomerPageQueryOutput> pageQueryOutputConvert(List<CustomerInfo> output);

    CustomerInfo createInputConvert(CustomerCreateInput input);

    CustomerInfo updateInputConvert(CustomerUpdateInput input);

    CustomerContact updateInputConvert(CustomerUpdateInput.contact input);

    CustomerImage updateInputConvert(CustomerUpdateInput.image input);

    CustomerContactSocialMedia updateInputConvert(CustomerUpdateInput.socialMedia input);

    CustomerContactPhone updateInputConvert(CustomerUpdateInput.phone input);

    CustomerContactBusinessCard updateInputConvert(CustomerUpdateInput.businessCard input);

    CustomerWebsite updateInputConvert(CustomerUpdateInput.website input);

    CustomerContactMail updateInputConvert(CustomerUpdateInput.mail input);


    CustomerSingleGetDetailOutput singleGetDetailOutputConvert(CustomerInfo output);

    CustomerFollow createFollowInputConvert(CustomerCreateFollowInput input);

    List<CustomerGetMailInfoByCustomerIdsOutput> getMailInfoByCustomerIdsOutputConvert(List<CustomerContactMail> output);

}
